From 76213ab209481f595d64e1ddd27a5c0a3d3378aa Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Wed, 26 Feb 2014 13:07:08 +0100 Subject: [PATCH] widget: Add widget-level handling of touch sequence state. These functions ATM do nothing but proxying the controller(s) state with the given sequence. --- gtk/gtkwidget.c | 62 +++++++++++++++++++++++++++++++++++++++++++++++++ gtk/gtkwidget.h | 8 +++++++ 2 files changed, 70 insertions(+) diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index 4fd4d912f4..b10f4ac619 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -16449,3 +16449,65 @@ gtk_widget_list_controllers (GtkWidget *widget, return retval; } + +GtkEventSequenceState +gtk_widget_get_sequence_state (GtkWidget *widget, + GdkEventSequence *sequence) +{ + GtkEventSequenceState state; + EventControllerData *data; + GtkWidgetPrivate *priv; + GList *l; + + g_return_val_if_fail (GTK_IS_WIDGET (widget), + GTK_EVENT_SEQUENCE_NONE); + + priv = widget->priv; + + for (l = priv->event_controllers; l; l = l->next) + { + data = l->data; + + if (!GTK_IS_GESTURE (data->controller)) + continue; + + state = gtk_gesture_get_sequence_state (GTK_GESTURE (data->controller), + sequence); + if (state != GTK_EVENT_SEQUENCE_NONE) + return state; + } + + return GTK_EVENT_SEQUENCE_NONE; +} + +void +gtk_widget_set_sequence_state (GtkWidget *widget, + GdkEventSequence *sequence, + GtkEventSequenceState state) +{ + EventControllerData *data; + gboolean handled = FALSE; + GtkWidgetPrivate *priv; + GList *l; + + g_return_val_if_fail (GTK_IS_WIDGET (widget), + GTK_EVENT_SEQUENCE_NONE); + + priv = widget->priv; + + for (l = priv->event_controllers; l; l = l->next) + { + data = l->data; + + if (!GTK_IS_GESTURE (data->controller)) + continue; + + handled |= gtk_gesture_set_sequence_state (GTK_GESTURE (data->controller), + sequence, state); + } + + if (!handled) + return; + + /* FIXME: Propagate upwards/downwards */ +} diff --git a/gtk/gtkwidget.h b/gtk/gtkwidget.h index 29d0ab356f..f3b2cf0d23 100644 --- a/gtk/gtkwidget.h +++ b/gtk/gtkwidget.h @@ -1481,6 +1481,14 @@ GDK_AVAILABLE_IN_3_14 GList * gtk_widget_list_controllers (GtkWidget *widget, GtkPropagationPhase phase); +GDK_AVAILABLE_IN_3_14 +GtkEventSequenceState gtk_widget_get_sequence_state (GtkWidget *widget, + GdkEventSequence *sequence); +GDK_AVAILABLE_IN_3_14 +void gtk_widget_set_sequence_state (GtkWidget *widget, + GdkEventSequence *sequence, + GtkEventSequenceState state); + G_END_DECLS #endif /* __GTK_WIDGET_H__ */ -- 2.30.2